package com.sunday.common.http.apache.utils;

import org.apache.hc.core5.http.ContentType;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * ContentTypeUtils 类提供了一个静态方法 getHttpContentType ，用于获取文件的媒体类型。
 *
 * @author zsy
 * @since 2024/1/19
 */
public class ContentTypeUtils {

    /**
     * getHttpContentType 方法接收一个文件名作为参数，然后尝试返回这个文件的媒体类型（也称为 MIME 类型或内容类型）。
     * 它使用基于文件扩展名或文件内容的探测机制来猜测文件类型。
     *
     * @param filename
     * @return {@link ContentType}
     */
    public static ContentType getHttpContentType(String filename) {
        try {
            String contentType = Files.probeContentType(Paths.get(filename));
            return ContentType.parse(contentType);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

}
